//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名   	: ShutDownMode.h
//创建人  	: Handry
//创建日期	: 
//描述	    : 关机模式头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人   	:
//版本	    :
//修改日期	:
//描述	    :
//=============================================================================================
#ifndef _SHUTDOWNMODE_H_
#define _SHUTDOWNMODE_H_

//=============================================================================================
//头文件
//=============================================================================================
#include "BSPTypeDef.h"
#include "SysState.h"

//=============================================================================================
//宏参数设定
//=============================================================================================
#define SHDN_COND_UV4_MASK      0x01
#define SHDN_COND_OCLOCK_MASK   0x02
#define SHDN_COND_COMM_MASK     0x04
#define SHDN_COND_PHOTO_MASK    0x08
#define SHDN_COND_CER_MASK      0x10
#define SHDN_COND_SHDNCMD_MASK  0x20
#define SHDN_COND_RESET         0x80


#define EX_ENTER_LIGHT_SLEEP_TIME  (6000)           //300000 / 50       //单位 50ms 空闲状态后，模组进入浅度休眠时间
#define EX_EXIT_LIGHT_SLEEP_PERIOD (864000)		    //43200000 / 50     //单位 50ms 空闲状态后，模组退出浅度休眠，上报一次定位的周期
#define EX_ENTER_DEEP_SLEEP_TIME   (3456000)		//172800000 / 50    //单位 50ms 空闲状态后，模组进入深度关机时间


//=============================================================================================
//数据类型定义
//=============================================================================================
typedef struct
{
    //t_TASK * ptask;
    u8 cond;
    u8 shdnen;                //关机模式使能标志
    u8 shdnfuelflag;          //关闭电量计标志
    u8 rtcstopflag;           //关闭RTC标志
    union
	{
		struct
		{
			u8 EnterLightSleep  :1;	//需要进入浅度休眠
			u8 WakeUp          	:1;	//唤醒，上报一次位置
            u8 EnterShutDown    :1; //关机标志
            u8 IsAwakened       :1; //模块被唤醒标志
			u8 RVSD          	:4; //保留
		}IdleFlagBit;
		u8 IdleFlagByte;
	}IdleFlag;      
    
    u32 uv4_timer;
    u32 oclock_timer;
    u32 photo_timer;
    u32 comm_timer;
    u32 bmscer_timer;
    u32 shdncmd_timer;

}t_SHDN_COND;

typedef struct
{
    t_WORK_STA last_sta;
    u8 timerid[1];
    u32 timer_cnt[1];
}t_SHUTDOWN_STATE;

//=============================================================================================
//声明变量，供外部使用
//=============================================================================================
extern t_SHDN_COND gSHDNCond;            //关机相关结构体

//=============================================================================================
//声明接口函数
//=============================================================================================
//=============================================================================================
//函数名称	: void ShutDownModeInit(void)
//函数参数	:
//输出参数	:
//静态变量	:
//功    能	: 关机模式初始化函数
//注    意	:
//=============================================================================================
void ShutDownModeInit(void);

//=============================================================================================
//函数名称	: void ShutDownModeCheck(void)
//函数参数	: void
//输出参数	: void
//静态变量	:
//功    能	: 关机模式判断，确认是否进入关机模式
//注    意	:
//=============================================================================================
void ShutDownModeCheck(void);

//=============================================================================================
//函数名称	: void ShutDownModeTask(void)
//函数参数	: void
//输出参数	: void
//静态变量	:
//功    能	: 关机模式任务函数
//注    意	:
//=============================================================================================
void ShutDownModeTask(void);

#endif

/*****************************************end of ShutDownMode.h*****************************************/
